<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>

// 1.错误类型: SyntaxError语法错误
// 2.错误信息: Unexpected token 'class'
// 3.错误位置: 8-常见错误类型.html:16 
// var class = '班级';
// console.log( '其他程序' );


// 1.错误类型: ReferenceError引用错误
// 2.错误信息: b is not defined
// 3.错误位置: 8-常见错误类型.html:26 
// var a = 123;
// console.log( b );


// 1.错误类型: TypeError类型错误
// 2.错误信息: test is not a function
// 3.错误位置: 8-常见错误类型.html:33 
// var test = 'hello';
// test();


// 1.错误类型: RangeError范围错误
// 2.错误信息: Maximum call stack size exceeded 栈溢出
// 3.错误位置: 8-常见错误类型.html:39 
// function fun(n){
//     n++;
//     console.log( n );
//     fun(n);
// }
// fun(1);// 调用函数


// 自定义错误
var err = new Error('错误信息');// 创建一个错误对象,不会导致浏览器报错
throw err;// 抛出错误,会导致浏览器报错
console.log( '其他程序' );


// JS代码出现报错,后面的程序不再执行,优先解决报错问题

// 异常处理
// try/catch语句 用于处理异常情况,避免报错导致后面的程序不执行
// try{
//     // 尝试执行的代码
// }catch(err){
//     // 捕获到错误之后执行这里的程序
//     console.log( '出错了',err )
// }

// console.log( '程序1' );
// console.lag( '程序2' );// 报错
// console.log( '程序3' );// 不执行

console.log( '程序1' );
try{
    // 可能出错的程序放这里尝试执行
    console.lag( '程序2' );
}catch(err){// 捕获处理错误
    console.log( '捕获到一个错误',err )
}
console.log( '程序3' );

</script>
</body>
</html>